package com.youlai.boot.common.result;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.ArrayList;
import java.util.List;

/**
 * Excel导入结果
 *
 * @author Jason
 * @since 2024/05/18
 */
@Data
@Accessors(chain = true)
@Schema(description = "Excel导入结果")
public class ExcelResult {
    
    /**
     * 是否成功
     */
    @Schema(description = "是否导入成功", example = "true")
    private boolean success = true;
    
    /**
     * 有效数据条数
     */
    @Schema(description = "有效数据条数", example = "100")
    private int validCount = 0;
    
    /**
     * 无效数据条数
     */
    @Schema(description = "无效数据条数", example = "5")
    private int invalidCount = 0;
    
    /**
     * 错误消息列表
     */
    @Schema(description = "错误消息列表")
    @JsonProperty("errorMsgs") // 前端使用errorMsgs字段名
    @JsonAlias("messageList") // 兼容旧的messageList字段名
    private List<String> errorMsgs = new ArrayList<>();
    
    /**
     * 总条数
     */
    @Schema(description = "总条数", example = "105")
    public int getTotal() {
        return validCount + invalidCount;
    }
    
    /**
     * 添加错误消息
     */
    public void addErrorMsg(String errorMsg) {
        this.errorMsgs.add(errorMsg);
    }
    
    /**
     * 获取错误消息列表 (兼容旧方法名)
     */
    public List<String> getMessageList() {
        return this.errorMsgs;
    }
    
    /**
     * 设置错误消息列表 (兼容旧方法名)
     */
    public void setMessageList(List<String> messageList) {
        this.errorMsgs = messageList;
    }
}
